package dao;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;

import hbt.HibernateUtil;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

import beanCarta.Producto;
import beanCuenta.Account;
import beanCuenta.AccountDetail;

public class cuentasDAO {
	
	private static cuentasDAO icuentasDAO;
	private static SessionFactory sf = null;
	
	public static cuentasDAO getInstance(){
		if(icuentasDAO == null){
			icuentasDAO = new cuentasDAO();
			sf = HibernateUtil.getSessionFactory();
		}
		return icuentasDAO;
	}

	public void guardarCuenta(Account account) {
		Session session = sf.openSession();
		session.beginTransaction();
		session.persist(account);
		session.getTransaction().commit();
		session.close();
	}


	
	public void guardarCuentaDetail(AccountDetail accountDetail) {
		Session session = sf.openSession();
		session.beginTransaction();
		session.persist(accountDetail);
		session.getTransaction().commit();
		session.close();
	}

	public Account traerCuenta() {
		Session session = sf.openSession();
		return (Account) session.createQuery("from Account").list().get(0);
	}


	
	
//	
//	private MovimientosStockDAO(){	}
//
//	public void grabarMovStock(Movimiento m) {
//		Session session = sf.openSession();
//		session.beginTransaction();
//		session.persist(m);
//		session.getTransaction().commit();
//		session.close();
//	}
//
//	public List<RenglonMovimiento> getMovimientos() {
//		Session session = sf.openSession();
//		
//		return session.createQuery("from Movimiento").list();
//	}
//
//	public Movimiento buscarMovimiento(int i) {
//		Session session = sf.openSession();
//		return (Movimiento) session.createQuery("from Movimiento m where m.id_movimiento_stock = ?").setInteger(0, i).list().get(0);
//	}
//
//	public List<ListadoMovimientos> getListadoMovimientos() {
//		Session session = sf.openSession();
//		Iterator it = session.createQuery("select m.id_movimiento_stock, sum(r.cantidad) from Movimiento m join m.renglones r group by m.id_movimiento_stock" ).iterate();
//		
//		
//		List<ListadoMovimientos> listadoRetorno = new LinkedList<ListadoMovimientos>();
//		while(it.hasNext()) {
//			Object[] tupla = (Object[]) it.next();
//			ListadoMovimientos u =  new ListadoMovimientos((Integer)tupla[0], Double.valueOf((Double)tupla[1]).floatValue ());
//			listadoRetorno.add(u);
//		}
//		return listadoRetorno;
//	}
//
//	public Deposito buscarDeposito(int numero) {
//		Session s = sf.openSession();
//		return (Deposito) s.createQuery("from Deposito d where d.numero_deposito = ?").setInteger(0, numero).list().get(0);
//	}
//
//	public void grabarDeposito(Deposito depo) {
//		Session s = sf.openSession();
//		s.beginTransaction();
//		s.persist(depo);
//		s.saveOrUpdate(depo);
//		s.getTransaction().commit();
//		s.close();
//	}
}
